#动态创建class

# class的定义是运行时动态创建的，而创建class的方法就是使用type()函数
# type()函数既可以返回一个对象的类型，又可以创建出新的类型

# 要创建一个class对象，type()函数依次传入3个参数：
#     class的名称；
#     继承的父类集合，注意Python支持多重继承，如果只有一个父类，别忘了tuple的单元素写法；
#     class的方法名称与函数绑定，这里我们把函数fn绑定到方法名hello上。

# 通过type()函数创建的类和直接写class是完全一样的，
# 因为Python解释器遇到class定义时，仅仅是扫描一下class定义的语法，然后调用type()函数创建出class

class Hello(object):
    def hello(self, name='world'):
        print('Hello, %s.' % name)

Hello().hello('huangxiaoli')

#动态创建Hello
def mhello(self,name='world'):
    print('Hello,%s.'% name)

MHello=type('MHello',(object,),dict(hello=mhello))

MHello().hello('gouyd')

#除了使用type 还可以使用元类(metaclass)来动态创建class
#ORM框架即需要使用metaclass来创建

#详细见有道云笔记相关元类文章